﻿#region Copyright

// // The contents of this file are subject to the Mozilla Public License
// // Version 1.1 (the "License"); you may not use this file except in compliance
// // with the License. You may obtain a copy of the License at
// //   
// // http://www.mozilla.org/MPL/
// //   
// // Software distributed under the License is distributed on an "AS IS"
// // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
// // License for the specific language governing rights and limitations under 
// // the License.
// //   
// // The Initial Developer of the Original Code is Robert Smyth.
// // Portions created by Robert Smyth are Copyright (C) 2008-2013.
// //   
// // All Rights Reserved.

#endregion

using System.Collections.Generic;
using NDependencyInjection.interfaces;
using NoeticTools.NWorkflow.Scopes;


// ReSharper disable InconsistentNaming

namespace NoeticTools.NWorkflow.Tests.Examples
{
    public abstract class SampleWorkflowRulesBase : WorkflowRules<Result>
    {
        protected readonly IList<string> _eventsLog;

        protected SampleWorkflowRulesBase(string name, IList<string> eventsLog, ISystemDefinition system = null)
            : base(name, system)
        {
            _eventsLog = eventsLog;
        }

        protected Result StepMethodA_Completed()
        {
            _eventsLog.Add("StepMethodA_Completed");
            return Result.Completed;
        }

        protected Result StepMethodA_Failed()
        {
            _eventsLog.Add("StepMethodA_Failed");
            return Result.Failed;
        }

        protected void StepMethodB()
        {
            _eventsLog.Add("StepMethodB");
        }
    }
}